import diff from "./diff"

/**
 * 更新组件，发生在vDom更新之后，如果更新之后的vDom是相同的组件，触发这个方法
 * @param {*} vDom 
 * @param {*} oldComponent 
 * @param {*} oldDom 
 * @param {*} container 
 */
export default function updateComponent(vDom, oldComponent, oldDom, container) {
  // 通过调用oldComponent的updateProps方法来更新props
  oldComponent.updateProps(vDom.props)
  // 获取最新的vDom
  let nextVDom = oldComponent.render()
  // 把oldComponent挂载到最新的vDOM上
  nextVDom.component = oldComponent
  diff(nextVDom, container, oldDom)
}